shortcuts: Another attempt to fix up forall
authorMatthias Clasen <mclasen@redhat.com>
Sat, 5 Dec 2015 18:52:09 +0000 (13:52 -0500)
committerMatthias Clasen <mclasen@redhat.com>
Sat, 5 Dec 2015 18:53:23 +0000 (13:53 -0500)
gtk_window_set_titlebar does not take ownership of the headerbar,
so we need to explicitly destroy it.

gtk/gtkshortcutswindow.c

index f9e46b60e8dcb81d27608ecca6d15c42b5396b27..5fa76675f0d897519e1e511fb872be7df2da770b 100644 (file)
@@ -330,7 +330,11 @@ gtk_shortcuts_window_remove (GtkContainer *container,
 
   g_signal_handlers_disconnect_by_func (widget, section_notify_cb, self);
 
-  gtk_container_remove (GTK_CONTAINER (priv->stack), widget);
+  if (widget == (GtkWidget *)priv->header_bar ||
+      widget == (GtkWidget *)priv->main_box)
+    GTK_CONTAINER_CLASS (gtk_shortcuts_window_parent_class)->remove (container, widget);
+  else
+    gtk_container_remove (GTK_CONTAINER (priv->stack), widget);
 }
 
 static void
@@ -565,11 +569,22 @@ gtk_shortcuts_window_dispose (GObject *object)
 
   g_signal_handlers_disconnect_by_func (priv->stack, G_CALLBACK (update_title_stack), self);
 
-  priv->header_bar = NULL;
-  priv->popover = NULL;
-  priv->main_box = NULL;
+  if (priv->header_bar)
+    {
+      gtk_widget_destroy (GTK_WIDGET (priv->header_bar));
+      priv->header_bar = NULL;
+      priv->popover = NULL;
+    }
 
   G_OBJECT_CLASS (gtk_shortcuts_window_parent_class)->dispose (object);
+
+#if 0
+  if (priv->main_box)
+    {
+      gtk_widget_destroy (GTK_WIDGET (priv->main_box));
+      priv->main_box = NULL;
+    }
+#endif
 }
 
 static void